/*
自己选择的路 ,跪着也要走完。朋友们 , 虽然这个世界日益浮躁起来,只
要能够为了当时纯粹的梦想和感动坚持努力下去 , 不管其它人怎么样,我
们也能够保持自己的本色走下去。
To the world , you will be a person , but to a person , you
will be the world .                               ——AKPower
*/
//作者:AKPower
//算法:
#include <iostream>
#include <cmath>
#include <algorithm>
#include <cstring>
#include <vector>
#include <map>
#include <queue>
#include <cstdio>
#include <string>
#include <stack>
#include <set>
#define IOS ios::sync_with_stdio(false), cin.tie(0)
using namespace std;
typedef long long ll;

void get(int k, int s, int x, int y)
{
    if (s < 4)
    {
        if (s == 0)
            x += 1, y += 1;
        else if (s == 1)
            x += 1, y += 2;
        else if (s == 3)
            x += 2, y += 2;
        else
            x += 2, y += 1;
        cout << x << ' ' << y << endl;
        return;
    }

    int base = 1 << (k - 2);
    int left = (s - 1) % base;
    int d = (s - 1) / base;
    base >>= 2;
    int now = left / base;
    if (d == 0)
    {

        if (now % 2)
            now = now == 1 ? 2 : -2;
        get(k - 2, left + now * base, x, y);
    }
    else if (d == 1)
    {
        get(k - 2, left, x, y + base * 2);
    }
    else if (d == 2)
    {
        get(k - 2, left, x + base * 2, y + base * 2);
    }
    else
    {
        now = now < 2 ? 2 : -2;
        get(k - 2, left + now * base, x + base * 2, y);
    }
}
int main()
{
    IOS;
    int k, n;
    cin >> k >> n;

    get(k, n, 0, 0);
    getchar();
    getchar();
    return 0;
}
